home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / network / atre12.zip / MULTIPLX.ZIP / MULTWIN.C < prev    next >
C/C++ Source or Header  |  1991-07-05  |  4KB  |  147 lines

  1. /*****************************
  2. * Windows Support File for
  3. * Mult.C
  4. ******************************/
  5.  
  6. #include <windows.h>
  7. #include "multwin.h"
  8. #include "multdlg.h"
  9.  
  10. extern NEAR PASCAL main(HWND);
  11. long FAR PASCAL WndProc (HWND, WORD, WORD, LONG);
  12. BOOL FAR PASCAL AboutDlgProc (HWND, WORD, WORD, LONG);
  13.  
  14. HANDLE hInst;
  15. FARPROC lpitAbout;
  16.  
  17. #pragma argsused
  18.  
  19. int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
  20.                    LPSTR lpszCmdLine, int nCmdShow)
  21.  
  22. {
  23.     static char szAppName[] = "MULT";
  24.     HWND hwnd;
  25.     MSG msg;
  26.     WNDCLASS wndclass;
  27.  
  28.     if (!hPrevInstance)
  29.      {
  30.      wndclass.style          = CS_HREDRAW | CS_VREDRAW;
  31.      wndclass.lpfnWndProc    = WndProc;
  32.      wndclass.cbClsExtra     = 0;
  33.      wndclass.cbWndExtra     = 0;
  34.      wndclass.hInstance      = hInstance;
  35.      wndclass.hIcon          = LoadIcon(hInstance, "multico");
  36.      wndclass.hCursor        = LoadCursor(NULL, IDC_ARROW);
  37.      wndclass.hbrBackground  = GetStockObject(WHITE_BRUSH);
  38.      wndclass.lpszMenuName   = "MENU_RESOURCE";
  39.      wndclass.lpszClassName  = szAppName;
  40.  
  41.      RegisterClass(&wndclass);
  42.      }
  43.  
  44.      hInst = hInstance;
  45.  
  46.      hwnd = CreateWindow(szAppName,                     /* Class */
  47.                          "11 Bit Multiplexor",           /* Title */
  48.                          WS_OVERLAPPEDWINDOW,           /* Style */
  49.                          CW_USEDEFAULT, CW_USEDEFAULT,  /* x, y */
  50.                          240,180,                       /* xsize, ysize */
  51.                          NULL,                          /* parent */
  52.                          NULL,                          /* class menu */
  53.                          hInstance,                     /* creator */
  54.                          NULL);                         /* Params */
  55.  
  56.  
  57.      ShowWindow(hwnd, nCmdShow);
  58.      UpdateWindow(hwnd);
  59.  
  60.      lpitAbout = MakeProcInstance((FARPROC)AboutDlgProc, hInst);
  61.  
  62.      while (GetMessage(&msg, NULL,0,0))
  63.       {
  64.       TranslateMessage(&msg);
  65.       DispatchMessage(&msg);
  66.       }
  67.      return msg.wParam;
  68. }
  69.  
  70.  
  71. long FAR PASCAL WndProc (HWND hwnd, WORD message, WORD wParam, LONG lParam)
  72.  
  73.    {
  74.    HANDLE hMenu, hSysMenu;
  75.    static int cRun = 0;
  76.  
  77.    switch (message)
  78.  
  79.     {
  80.  
  81.  
  82.     case WM_COMMAND:
  83.         hMenu = GetMenu(hwnd);
  84.         hSysMenu = GetSystemMenu(hwnd, 0);
  85.         switch (wParam)
  86.             {
  87.             case IDM_EXIT:
  88.                 DestroyWindow(hwnd);
  89.                 break;
  90.  
  91.             case IDM_RUN:
  92. /*                EnableMenuItem(hMenu, IDM_RUN, MF_GRAYED);
  93. */
  94.                 EnableMenuItem(hMenu, IDM_EXIT, MF_GRAYED);
  95.                 EnableMenuItem(hSysMenu, SC_CLOSE, MF_GRAYED);
  96.                 DrawMenuBar(hwnd);
  97.                 cRun ++;
  98.                 if (!main(hwnd))
  99.                     {
  100.                     cRun --;
  101.                     MessageBeep(0);
  102.                     MessageBox(hwnd,"Could not run Multiplexor!", "Multiplexor", MB_OK);
  103.                     }
  104.                 cRun --;
  105. /*                EnableMenuItem(hMenu, IDM_RUN, MF_ENABLED);
  106. */
  107.                 if (!cRun)
  108.                     {
  109.                     EnableMenuItem(hMenu, IDM_EXIT, MF_ENABLED);
  110.                     EnableMenuItem(hSysMenu, SC_CLOSE, MF_ENABLED);
  111.                     }
  112.                 DrawMenuBar(hwnd);
  113.                 break;
  114.  
  115.             case IDM_ABOUT:
  116.                 DialogBox(hInst,
  117.                           MAKEINTRESOURCE(IDD_ABOUT),
  118.                           hwnd,
  119.                           lpitAbout);
  120.                 break;
  121.             }
  122.         break;
  123.  
  124.     case WM_DESTROY:
  125.         PostQuitMessage(0);
  126.         break;
  127.  
  128.     default:
  129.         return DefWindowProc(hwnd,message,wParam,lParam);
  130.     }
  131.    return 0L;
  132.    }
  133.  
  134. #pragma argsused
  135.  
  136. BOOL FAR PASCAL AboutDlgProc (HWND hdlg, WORD message, WORD wParam, LONG lParam)
  137.    {
  138.    switch (message)
  139.        {
  140.        case WM_COMMAND:
  141.            EndDialog(hdlg, TRUE);
  142.            return TRUE;
  143.        default:
  144.            return FALSE;
  145.        }
  146.    }
  147.